skywalking指南 您所在的位置:网站首页 skywalking java-agent tags skywalking指南

skywalking指南

2024-07-09 15:54| 来源: 网络整理| 查看: 265

skywalking指南—agent日志采集和插件

文章目录 skywalking指南—agent日志采集和插件一、agent及引入日志采集1.1、agent的下载及目录介绍1.2、项目引入java agent,添加日志采集 二、关于agent插件三、插件开发及优秀文章推荐四、问题汇总

前言: skywalking其他指南请点击以下链接跳转 skywalking指南—oap及UI的搭建 skywalking指南—skywalking链路追踪 注: 本文中所有代码,皆可在我的GitHub链接中获取

一、agent及引入日志采集 1.1、agent的下载及目录介绍

从官网下载agent(本文采用java agent),版本为8.8.0。解压后目录如下。 agent目录

activations和plugins中为agent默认扫描的插件目录,将插件的jar包拖入这两个文件夹中即可使用(建议根据含义拖入plugins中)。bootstrap-plugins中放置引导插件。optional-plugins中放置可选插件。config中为agent的配置文件。

下载好后,可以修改config中agent.config,可以通过collector.backend_service指定oap-server 地址; config中所有的配置,都可以通过jvm参数的方式来配置。如collector.backend_service可以设置为 -Dskywalking.collector.backend_service=127.0.0.1:11800,来配置oap-server地址。具体详见官方文档

1.2、项目引入java agent,添加日志采集 项目承自第二篇《skywalking指南—创建dubbo项目及追踪》中的项目,项目已实现链路追踪功能。本文将实现日志采集功能。依赖引入,由于项目的日志框架为logback,需要引入logback plugin(其他日志框架的maven plugin详见官网地址) org.apache.skywalking apm-toolkit-trace 8.8.0 org.apache.skywalking apm-toolkit-logback-1.x 8.8.0 编写logback日志配置文件。在resources下新建一个logback-spring.xml文件,根据官网文档编写配置文件,可以写作以下两种。 两者的区别就是layout中是采用TraceIdPatternLogbackLayout还是TraceIdMDCPatternLogbackLayout,如果采用TraceIdMDCPatternLogbackLayout,需要将[%tid]改为[%X{tid}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n %d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n 在项目的启动配置中,添加jvm参数。具体jvm参数详见《skywalking指南—创建dubbo项目及追踪》,如需添加其他jvm,可回顾1.1、agent的下载及目录介绍启动项目,通过apifox/postman访问api接口,可以看到控制台打印出了如下日志,TID:后面即本次请求的traceId 控制台打印日志检查两个项目所有日志打印的结果,是否有断链。确认无断链后,就要做日志采集,将日志推到oap-server。官方文档中gRPC reporter could forward the collected logs to SkyWalking OAP server,具体方式即将appender中的class替换为org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender。以下为最终态的日志配置。 ${APM_PATTERN} 在application.properties中添加mybatis日志,logging.level.com.example.start.test.mapper=debug开启mybatis日志。再次启动项目,通过apifox/postman访问api接口。在skywalkingUI的日志中查看采集到的日志。多个服务,单次请求的追踪id是一致的。 日志采集日志怎么用呢?在链路追踪中,看到有红色的链路,即报错的链路,将链路的traceId复制后,在日志菜单下的追踪id中粘贴搜索,即可看到本次请求整个链路上的所有日志。然后即可根据日志来分析异常原因。日志采集成功后,在链路追踪里也可直接查看每个链路相关的日志,来找异常原因 日志的使用 日志的使用也可在项目中添加全局Response处理,将traceId添加到返回参数中,当出现异常后,即可直接找到对应链路中查找错误原因。 添加后重启项目,可以看到返回的信息中有了traceId,可以通过这个traceId做链路追踪。 @Slf4j @RestControllerAdvice public class GlobalExceptionHandler { @ResponseBody @ExceptionHandler(value = RuntimeException.class) public Result defaultErrorHandler(HttpServletRequest request, Exception ex) { String traceId = TraceContext.traceId(); return new Result(400, "失败", ex.getMessage(), traceId); } } @Data @ToString @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor public class Result implements Serializable { private Integer code; private String message; private T data; private String traceId; }

全局异常处理

二、关于agent插件

根据官方文档介绍,agent插件支持热插拔,常用的插件放在了plugins中。目前8.8.0中插件支持的中间件、框架的版本见官方链接。当在agent使用过程中,出现链路断裂问题,可先查看版本是否有问题,如果有问题,就需要找对应版本的插件或自行开发插件使用。现在我们来说基于8.8.0版本(当前最新发行版本),如何去找高版本插件,以apache-dubbo为例。

查看8.8.0中插件所支持的apache-dubbo版本,以及项目中所使用的版本(我的是3.0.4)。可见8.8.0支持的最高版本为2.7.0,而我使用的版本过高。 官方支持的apache-dubbo

查看latest版本的agent插件所支持的apache-dubbo版本,为2.7.x -> 3.x,满足我们的需求。 latest版本支持的apache-dubbo

打开java-agent的github页面,下载main分支源码,找到源码中apm-sniffer — apm-sdk-plugin 下的dubbo-3.x-conflict-patch和dubbo-3.x-plugin的包,修改parent的version为8.8.0,然后将插件单独deploy。 java-agent github 修改pom 4.将打包好的jar包放入skywalking agent文件夹的plugins下,再次重启项目、访问接口,去sky walkingUI去看,链路已然完整。 plugins 【注:由于agent的插件加载机制,插件可以插拔,对自己不需要的版本,可以直接移除,以免占用空间,需要但没有的插件,可以到github获取或自行开发】

三、插件开发及优秀文章推荐 skywalking中文文档 https://skyapm.github.io/document-cn-translation-of-skywalking/插件开发优秀文章 https://www.imooc.com/article/312560官方插件开发文档 https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/java-plugin-development-guide/待补充 四、问题汇总

如果大家有什么问题,可以在评论区提出,大家一起来解决。评论区中出现的问题,会一并记录到问题记录中

按文中加好配置后,没有采集到sql日志。 答:请确认一下,是不是你的项目中有添加mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl TraceContext这个类找不到,无法在代码中获取traceId 答:需要引入apm-toolkit-trace依赖,如果已引入,尽量将version与oap-server的version一致


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有